"""
文件处理工具模块
"""
import os
import logging
import pandas as pd
import csv
import json
import openpyxl
from datetime import datetime

logger = logging.getLogger(__name__)

class FileUtils:
    """文件处理工具类"""
    
    @staticmethod
    def read_csv(file_path, **kwargs):
        """
        读取CSV文件
        
        Args:
            file_path: 文件路径
            **kwargs: pandas.read_csv的其他参数
        
        Returns:
            pandas.DataFrame: 读取的数据
        """
        try:
            # 设置默认参数
            default_params = {
                'encoding': 'utf-8',
                'low_memory': False
            }
            
            # 合并参数
            params = {**default_params, **kwargs}
            
            # 读取CSV文件
            df = pd.read_csv(file_path, **params)
            return df
        except Exception as e:
            logger.error(f"读取CSV文件失败: {str(e)}")
            raise
    
    @staticmethod
    def write_csv(df, file_path, **kwargs):
        """
        写入CSV文件
        
        Args:
            df: DataFrame
            file_path: 文件路径
            **kwargs: pandas.to_csv的其他参数
        
        Returns:
            bool: 是否成功
        """
        try:
            # 设置默认参数
            default_params = {
                'index': False,
                'encoding': 'utf-8'
            }
            
            # 合并参数
            params = {**default_params, **kwargs}
            
            # 确保目录存在
            os.makedirs(os.path.dirname(os.path.abspath(file_path)), exist_ok=True)
            
            # 写入CSV文件
            df.to_csv(file_path, **params)
            return True
        except Exception as e:
            logger.error(f"写入CSV文件失败: {str(e)}")
            raise
    
    @staticmethod
    def read_excel(file_path, **kwargs):
        """
        读取Excel文件
        
        Args:
            file_path: 文件路径
            **kwargs: pandas.read_excel的其他参数
        
        Returns:
            pandas.DataFrame: 读取的数据
        """
        try:
            # 设置默认参数
            default_params = {
                'engine': 'openpyxl'
            }
            
            # 合并参数
            params = {**default_params, **kwargs}
            
            # 读取Excel文件
            df = pd.read_excel(file_path, **params)
            return df
        except Exception as e:
            logger.error(f"读取Excel文件失败: {str(e)}")
            raise
    
    @staticmethod
    def write_excel(df, file_path, sheet_name='Sheet1', **kwargs):
        """
        写入Excel文件
        
        Args:
            df: DataFrame
            file_path: 文件路径
            sheet_name: 工作表名称
            **kwargs: pandas.to_excel的其他参数
        
        Returns:
            bool: 是否成功
        """
        try:
            # 设置默认参数
            default_params = {
                'index': False,
                'engine': 'openpyxl',
                'sheet_name': sheet_name
            }
            
            # 合并参数
            params = {**default_params, **kwargs}
            
            # 确保目录存在
            os.makedirs(os.path.dirname(os.path.abspath(file_path)), exist_ok=True)
            
            # 写入Excel文件
            df.to_excel(file_path, **params)
            return True
        except Exception as e:
            logger.error(f"写入Excel文件失败: {str(e)}")
            raise